Artifact 1c4577c2b4dd7a94a0a27c04ef86476bcccd0027:
- File dvcs/logview.js — part of check-in [13a38ab605] at 2012-05-12 12:12:09 on branch trunk — Добавлен показ файла/папки для которго строится история. При выводе истории многострочные строки переводятся в одну. (user: sosnae size: 8696) [more...]
$engine JScript $uname logview $dname Просмотр истории изменений $addin global $addin extfiles $addin stdcommands $addin stdlib // (c) Сосна Евгений shenja at sosna.zp.ua // Скрипт - просмотр истории для версионного контроля. global.connectGlobals(SelfScript) var мФормаЖурнала=null var Backend = null var RootPath = null var RootFile = null function macrosЖурнал(){ var Form = CreateLogViewForm(); Form.open(); /* var pathToForm=SelfScript.fullPath.replace(/js$/, 'ssf') мФормаЖурнала=loadScriptForm(pathToForm, SelfScript.self) // Обработку событий формы привяжем к самому скрипту мФормаЖурнала.Открыть(); */ } function CreateLogViewForm() { return new _LogView(); } function _LogView() { this.form = loadScriptForm(SelfScript.fullPath.replace(/js$/, 'ssf'), this); this.backend = null; this.rootpath = null; this.timeline = this.form.timeline; this.listfiles = this.form.СписокИзминенийФайлов; this.listtocompare = []; this.LimitRevisions = мКвоРевизийПоУмолчанию; } _LogView.prototype.open = function (caller, path) { this.backend = caller; this.rootpath = path; this.form.КвоРевизийПоУмолчанию = this.LimitRevisions; this.form.Caption = "Просмотр истории "+ this.rootpath; if ((this.backend) && (this.rootpath)) this.init() this.form.Open(); } _LogView.prototype.init = function () { this.timeline.Очистить(); result = this.backend("GETLOG", this.rootpath, this.LimitRevisions); for (var i=0; i<result.length; i++) { НоваяСтрока = this.timeline.Добавить(); НоваяСтрока.Версия = result[i]['version'] НоваяСтрока.Коментарий = result[i]['comment'] НоваяСтрока.Автор = result[i]['author'] НоваяСтрока.Дата = result[i]['date'] } } _LogView.prototype.listfilesBeforeEdit = function (Элемент, Отказ) { Отказ = true; } _LogView.prototype.timelineПриАктивизацииСтроки = function (Элемент) { this.listfiles.Очистить(); this.form.ЭлементыФормы.ПолеТекстовогоДокумента1.УстановитьТекст(""); //мФормаЖурнала.СписокИзминенийФайлов.Очистить(); if ((this.backend) && (this.rootpath)) { var ТекущаяСтрока = this.form.ЭлементыФормы.timeline.ТекущиеДанные; if (ТекущаяСтрока) { var result = this.backend("GETINFO", this.rootpath, ТекущаяСтрока.Версия); this.form.ЭлементыФормы.ПолеТекстовогоДокумента1.УстановитьТекст(result['comment']); var files = result['files']; for (var i=0; i<files.length; i++) { НоваяСтрока = this.listfiles.Добавить(); НоваяСтрока.Версия = files[i]['version']; НоваяСтрока.Файл = files[i]['file']; НоваяСтрока.Статус = files[i]['status']; НоваяСтрока.ИмяФайла = files[i]['fullpath'] // минимальные действия на форме. } } } } _LogView.prototype.КПСравненияКПСохранитьВерсию = function (Элемент) { //Диалог для выбора сохранения файла... var ТекущаяСтрока = this.form.ЭлементыФормы.СписокИзминенийФайлов.ТекущиеДанные; if (ТекущаяСтрока) { var мКаталог = ""; var f = v8New("File", ТекущаяСтрока.ИмяФайла); if (f.Exist()){ if (!f.IsDirectory()) { мКаталог = f.Path; } else { мКаталог = ТекущаяСтрока.ИмяФайла; } } path = this.backend("GETFILEATREVISION", ТекущаяСтрока.ИмяФайла, ТекущаяСтрока.Версия); var f = v8New("File", path); if (!f.Exist()) { Message("Не возможно получить файл из системы версионного контрорля! "+ ТекущаяСтрока.ИмяФайла); return; } ДиалогСохраненияФайла=v8New("ДиалогВыбораФайла", РежимДиалогаВыбораФайла.Save); ДиалогСохраненияФайла.Каталог = мКаталог; ДиалогСохраненияФайла.ПолноеИмяФайла = мКаталог + f.Name; ДиалогСохраненияФайла.Заголовок = "Выберете путь для сохранения файла" if(ДиалогСохраненияФайла.Выбрать()==false) return "" try { ПереместитьФайл(path, ДиалогСохраненияФайла.ПолноеИмяФайла); } catch (e) { Message("Не удалось сохранить файла по пути " + ДиалогСохраненияФайла.ПолноеИмяФайла + " по причине "+e.description) } } } _LogView.prototype.КПСравненияКПДобавитьКСравнению = function (Элемент) { var ТекущаяСтрока = this.form.ЭлементыФормы.СписокИзминенийФайлов.ТекущиеДанные; if (ТекущаяСтрока) { var i = this.listtocompare.length; if (i > 2) { //Не должно так быть, удалим весь массив и грязно поругаемся. this.listtocompare= []; Message("Исключительная ситуация при добавлении файлов в список сравнения, пока больше 2х не поддерживается 1С"); return; } i = i>0? 1:0; //номер индекса в массиве. this.listtocompare[i] = {'version':ТекущаяСтрока.Версия, 'file':ТекущаяСтрока.ИмяФайла}; if (i>0) { //вызовем сравнение файлов... if (this.backend) { path1 = this.backend("GETFILEATREVISION", this.listtocompare[0]['file'], this.listtocompare[0]['version']); path2 = this.backend("GETFILEATREVISION", this.listtocompare[1]['file'], this.listtocompare[1]['version']); extfiles.СравнитьФайлы(path1, path2); } this.listtocompare = []; } } } _LogView.prototype.КПСравненияКПСравнить = function (Элемент) { var ТекущаяСтрока = this.form.ЭлементыФормы.СписокИзминенийФайлов.ТекущиеДанные; if (ТекущаяСтрока) { if (this.backend) { path1 = this.backend("GETFILEATREVISION", ТекущаяСтрока.ИмяФайла, ТекущаяСтрока.Версия) path2 = ТекущаяСтрока.ИмяФайла; extfiles.СравнитьФайлы(path1, path2); } } } _LogView.prototype.КнОбновитьНажатие = function (Элемент) { this.LimitRevisions = this.form.КвоРевизийПоУмолчанию; //Надо придумать настройку для сохранения. this.init(); } function getDefaultMacros() { return 'Журнал' } //getDefaultMacros //////////////////////////////////////////////////////////////////////////////////////// ////{ Инициализация скрипта //// var pflLogViewLimitOfRevisions = "LogView/LimitRevisions" profileRoot.createValue(pflLogViewLimitOfRevisions, 30, pflSnegopat); var мКвоРевизийПоУмолчанию = profileRoot.getValue(pflLogViewLimitOfRevisions) ////} Инициализация скрипта