前端学习笔记1

1解决显示任务

1)修改MainView.js

修改initialize函数,始终都创建this.views.TaskManagerView 。


code:

        //hanzt 0
        /*
         this.views.TaskManagerView = app.userHasPermission('TASK_MANAGER') && new TaskManagerView({
            serverModel: this.serverModel
        });
        */
        
        this.views.TaskManagerView = new TaskManagerView({
            serverModel: this.serverModel
        });

2)修改render函数

render: function () {
        app.delayedSpinner.hide();
        //hanzt 1
        var result = app.login();
        this.views.TaskManagerView.render();//这里提前让TaskManagerView渲染,是为了让其初始化tasklist变量,这里如果不初始化,后面将不能使用此变量,任务列表就无法显示。

        
        result = true;//这里默认用户登录验证已经通过。
        if (result) {
       
           
            if (this.views.AgreementView.isUnacceptedAgreement()) {
                var promise = this.views.AgreementView.show();
                promise.done($.proxy(function () {
                    window.setTimeout($.proxy(function () {
                        this._renderWorkspace();
                    }, this), 256);
                }, this));
            } else {
                this._renderWorkspace();
            }
        } else {
            this.clearWorkspace();
            this.$workspace.html(this.views.LoginView.render());
        }


        this.windowOnResize();
        return this;
    },


3)修改_renderWorkspace函数


   _renderWorkspace: function () {
    console.log('rendering commenced', arguments);

        //hanzt 2
        //this.userActive(); //避免用户验证和服务器的交互等
   
        
        this.clearWorkspace();
        this._taskmanagerSwitchInit();
    

 this.views.TaskController.fetchTask();


        if (app.userHasPermission('TASK_MANAGER')) {
            if (tk.context.relatedProgrammerList && tk.context.relatedProgrammerList.length > 1) {
                this.$programmerFilter.show();
            }
            this.views.TaskManagerView.render();
            
        }
        
        // wochit-op: todo: need reevaluation cause we no more have `tk.context.user.organization`
        app.navPillLinks.render();
        


    },


4)修改ServerModel.js

修改其initialize函数:

    initialize: function () {
        this.on('change:listType', $.proxy(this._persistentListType, this));
        
        //hanzt 4  //此处为了初始化任务,因为还未和服务器连接,只能hardcode几个任务。
        this.set('previewCollection',new TaskPreviewCollection({}));
        
        for(var i = 0; i < 10; i++ )
        {
        this.get('previewCollection').add(new TaskPreviewModel({storyItemId:"12345"+i.toString(),title:"Miranda Cosgrove Lawsuit -- You Suck At Math ... Claims Truck Driver",taskType:"ASSET_MODERATION",logicalProperties:{taskManagerText: 'Pending Moderation',previewText: 'This article is ready for moderation',iconClass: "op-icon-moderation"},narratedText:"Miranda Cosgrove exaggerated her medical expenses after a tour bus accident 3 years ago -- this according to the truck driver who's being sued by Cosgrove for her injuries. The singer and \"iCarly\" star is suing the drivers of her bus and the semi. In court docs, Cosgrove -- who suffered a broken ankle in the wreck -- claims her medical bills added up to $184,490.16. He also denies Cosgrove's claim that she lost a lucrative sponsorship with Neutrogena after the crash"}));
        }
        
    },


注意,ServerModel.js模块需要引用TaskPreviewModel模块。

5)修改TaskController的fetchTask函数

 fetchTask: function () {
        this.stopPullForNewTask();
        if (app.userState.isINPROGRESS()) {
            console.error('its not rational to call fetch while task in progress');
            return;
        }


        app.trigger('app.clearWorkspace');
        app.delayedSpinner.show();




        //hanzt 3
        this.serverModel.initialize();//为了有显示内容填充默认数据。
        this.serverModelFetchSuccess();
        
//        this.serverModel.fetch({
//            error: $.proxy(this.serverDownError, this),
//            success: $.proxy(this.serverModelFetchSuccess, this),
//            complete: $.proxy(function () {
//                console.timeEnd('TIME: fetchTask');
//            }, this)
//        });
    },


2解决任务可以编辑问题

1)修改MediaFilteringView.js的initialize函数,将移出媒体资产(图片,视频等)的函数注释掉,此处不注释掉,hardcode填充的资产将被清除.

      //hanzt 7
        //this.model.get('assets').remove( this.model.get('assets').getUnsortedPublic(),{silent:true});

2)修改TaskController.js,添加默认的媒体资产.修改函数taskEvent,如下

    taskEvent: function (taskModel, event) {

        // deny START task events while already working on one
        if (/START/.test(event) && app.userState.isINPROGRESS()) {
            app.Message.show('MULTIPLE_TASK_PROCESSING');
            return;
        }


        // set task default identifications
        
        //hanzt 5 填充默认的媒体资源数据包括视频、图片等等。
        var arrays = new Array();
        for(var i = 0; i < 10 ;i++)
    {
        if( i < 5)
        {
        arrays[i] = {articleMediaAssetId:i,type: app.assetType.IMAGE,score:'UNSORTED',bucketDirectory:'PUBLIC',thumbnail:"1.png",url:"http://localhost:8080/News/resources/temp/Getty_images_" + (i+1).toString()+".jpg",startTime:12,providerId:"www.cdv.com"};
        }
        else
        {
        arrays[i] = {articleMediaAssetId:i,type: app.assetType.VIDEO,score:'UNSORTED',bucketDirectory:'PUBLIC',posterImg:"localhost:8080/News/resources/temp/Getty_images_" + (i+1).toString()+".jpg",url:"http://localhost:8080/News/resources/temp/news.mp4",startTime:12,providerId:"www.cdv.com"};
        }
       
    }
        
        var harvest = null,
            data = {
            event: event,
            storyItemId: taskModel.get('storyItemId'),
            storyItemType: taskModel.get('storyItemType'),
            programmerId: taskModel.get('programmerId'),
            taskType: taskModel.get('taskType'),
            programmerName:"CDV",
            title:taskModel.get('title'),
            narratedText:taskModel.get('narratedText'),
            mainCategory:"Tech",
            storyUrl:"http://sohu.com",
            narrationTime:8.32,
            minSelectableVideoSegmentTime:0.1,
            configMinImageDT:6,
            configMaxImageDT:10,
            
           // assets:[{articleMediaAssetId:1, type: app.assetType.IMAGE,score:'UNSORTED',bucketDirectory:'PUBLIC',thumbnail:"1.png",url:"http://localhost:8080/News/resources/temp/Getty_images_1.jpg",startTime:12,providerId:"www.sohu.com"},{articleMediaAssetId:2,type: app.assetType.VIDEO,score:'UNSORTED',bucketDirectory:'PUBLIC',thumbnail:"1.png",startTime:12,providerId:"www.sohu.com"}]
            assets:arrays
            
        };


        if (/START/.test(event)) {


        //hanzt 6
        var taskDateModel = new TaskDataModel(data, { parse: true });
       
        alert("taskDateModel = " + JSON.stringify(taskDateModel));


        taskModel.set('assets',taskDateModel.get('assets'));
        taskModel.set('taskDataModel', taskDateModel);


        alert(JSON.stringify(taskDateModel.get('assets')));
       
            app.trigger('app.taskStarted', taskModel /*typeof taskPreviewModel*/);
            
            this.displayTimer(data.taskType);
            
            app.delayedSpinner.hide();
/*
         $.when(
                this.getStory(data)//,
                //this.getMyGallery(data)
            ).then($.proxy(function (story) {








                taskModel.set('taskDataModel', new TaskDataModel(story, { parse: true }));
                app.trigger('app.taskStarted', taskModel);
                this.displayTimer(story.taskType);


            }, this)).fail($.proxy(function () {


            }, this)).always($.proxy(function () {
                    app.delayedSpinner.hide();
            }, this));
*/

        } else {
            clearInterval(app.taskTimerInterval );
            app.taskTimer = 0 ;


            if (taskModel.serializable && event == 'ACCEPT') {
                var errors  = taskModel.collectErrors();


                if (errors.length) {
                    app.Message.show('CLIENT_VALIDATION_FAILED', { errors: errors });
                    return;
                }
                harvest = taskModel.serialize();


                if (app._.isEmpty(harvest) || !app._.isObject(harvest)) {
                    console.info("There is no task specific data to send");
                }


                $.extend(data, harvest);
                console.log('Harvested data:', data);


            } else if (event == 'REJECT') {
                $.extend(data, {
                    reasonCode: taskModel.get('reasonCode') || 'OTHER',
                    reasonText: taskModel.get('reason') || 'Wochit could not turn this story into a video to meet sufficient editorial quality'
                });
            } else if (event == 'TOKIT_AGAIN' || (event == 'CANCEL' && data.taskType == 'NARRATION')) {
                var comments = [];
                harvest = taskModel.get('taskDataModel').serialize();


                harvest.comment = ((harvest.comment && harvest.comment + ', ') || '') +
                    app.friendlyText.fromEnum(taskModel.get('reasonCode')) +
                    ((taskModel.get('reason') && ' - ' + taskModel.get('reason')) || '');


                $.extend(data, harvest);
                $.extend(data, {
                    reasonCode: taskModel.get('reasonCode') || 'OTHER',
                    reasonText: taskModel.get('reason')
                });
            }


            this.handleTaskWrapper(data, taskModel);
        }
    },

3)修改AssetCollection.js

修改函数getFiltered,让其始终返回true.主要是为了让素材列表能显示出素材,详细原因稍后需要再进一步研究.

        getFiltered: function () {
            var unsorted = this.getUnsorted(),
                self = this;


            return app._.filter(unsorted, function (model) {
                var directoryOk = true,
                    entityOK = true;


                if (self.task.get('_bucketDirectory') && self.task.get('_bucketDirectory').value !== '') {
                    directoryOk = model.get('bucketDirectory') === self.task.get('_bucketDirectory').value;
                } else {
                    directoryOk = model.get('bucketDirectory') !== 'MY_GALLERY' && model.get('bucketDirectory') !== 'PUBLIC';
                }


                if (self.task.get('_bucketEntity') && model.get('assetEntityScores')) {
                    entityOK = model.get('assetEntityScores')[self.task.get('_bucketEntity')];
                }




                //TODO : is this really needed?
                if (self.task.get('_bucketDirectory') && self.task.get('_bucketDirectory').value == 'MY_GALLERY' && directoryOk) {
                    if (model.get('score') != app.assetScore.UNSORTED) {
                        entityOK = false;
                    }
                }


                //hanzt 11 为了让素材列表显示素材,临时返回true.详细原因稍后再研究.
                return true;//directoryOk && entityOK;
            });


        },

3解决可以在Timeline页面可以向文字上添加视频的问题

1)修改TimelineView.js解决在Timeline编辑界面有文字显示的问题,此处hardcode一段固定的文字.修改_render函数.如下:


        _render: function () {
            var promise = $.Deferred();


            this.$medias.empty();
            this._renderMedias();
            this.$el.show();




            this.$tokens.empty();
            // hanzt 9 注释掉获得Token的方法.
//            this._loadTokens()
//                .fail($.proxy(function () {
//                    this.$tokens.empty().append('Can not fetch timeline tokens');
//                }, this))
//                .done($.proxy(function () {
//                    this._renderTokens();
//                    this.model.trigger('task.revalidate');
//                }, this))
//                .always($.proxy(function () {
//                    promise.resolve();
//                }, this));


            
            //hanzt 10 构建默认的Token.
            var narationText = "Miranda Cosgrove exaggerated her medical expenses after a tour bus accident 3 years ago -- this according to the truck driver who's being sued by Cosgrove for her injuries. The singer and \"iCarly\" star is suing the drivers of her bus and the semi. In court docs, Cosgrove -- who suffered a broken ankle in the wreck -- claims her medical bills added up to $184,490.16. He also denies Cosgrove's claim that she lost a lucrative sponsorship with Neutrogena after the crash";
            
            var tokens = narationText.split(" ");
            
            var i = 0;
            for(var token in tokens)
            {
            this.tokenCollection.add({type:"WORD",isSortable:true,order:i,string:tokens[token]});
            i++;
            this.tokenCollection.add({type:"SPACE",isSortable:true,order:i,string:" "});
            i++;
            };


            this._renderTokens();
            //this._tokenSpotMark();
            this.model.trigger('task.revalidate');
            promise.resolve();
            
            return promise;
        },


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值