forked from Gitlink/forgeplus-react
Merge branch 'develop' of http://git.trustie.net/jasder/forgeplus-react into develop
This commit is contained in:
commit
56ea97b8b2
|
@ -3,8 +3,8 @@
|
|||
<component name="ChangeListManager">
|
||||
<list default="true" id="9830c5da-176a-4c72-a301-9f6ce98c82fe" name="Default Changelist" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/forge/Main/CoderRootFileDetail.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/forge/Main/CoderRootFileDetail.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/forge/Order/Detail.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/forge/Order/Detail.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/forge/Merge/MergeSubmit.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/forge/Merge/MergeSubmit.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/forge/Merge/MessageCount.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/forge/Merge/MessageCount.js" afterDir="false" />
|
||||
</list>
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
|
@ -13,24 +13,12 @@
|
|||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Order/order.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="231">
|
||||
<caret line="23" column="19" selection-start-line="23" selection-start-column="19" selection-end-line="23" selection-end-column="19" />
|
||||
<folding>
|
||||
<element signature="e#0#42#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
|
||||
<file pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Order/Detail.js">
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Merge/MergeSubmit.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="2342">
|
||||
<caret line="436" column="13" selection-start-line="436" selection-start-column="13" selection-end-line="436" selection-end-column="13" />
|
||||
<state relative-caret-position="222">
|
||||
<caret line="175" column="212" lean-forward="true" selection-start-line="175" selection-start-column="212" selection-end-line="175" selection-end-column="212" />
|
||||
<folding>
|
||||
<element signature="e#0#40#0" expanded="true" />
|
||||
</folding>
|
||||
|
@ -39,32 +27,12 @@
|
|||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Main/CoderRootFileDetail.js">
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Merge/MessageCount.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="166">
|
||||
<caret line="58" column="29" selection-start-line="58" selection-start-column="29" selection-end-line="58" selection-end-column="29" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Main/CoderRootIndex.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<state relative-caret-position="32">
|
||||
<caret line="428" column="11" selection-start-line="428" selection-start-column="11" selection-end-line="428" selection-end-column="238" />
|
||||
<folding>
|
||||
<element signature="e#0#42#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Order/OrderItem.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="295">
|
||||
<caret line="19" column="25" selection-start-line="19" selection-start-column="25" selection-end-line="19" selection-end-column="25" />
|
||||
<folding>
|
||||
<element signature="e#0#42#0" expanded="true" />
|
||||
<element signature="e#0#40#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
|
@ -77,10 +45,24 @@
|
|||
<find>versions</find>
|
||||
<find>缺陷</find>
|
||||
<find>contents/file</find>
|
||||
<find>新建翻转课堂</find>
|
||||
<find>nHeader</find>
|
||||
<find>点赞</find>
|
||||
<find>fork</find>
|
||||
<find>.push(</find>
|
||||
<find>QuillForEditor</find>
|
||||
<find>setContents</find>
|
||||
<find>isedit</find>
|
||||
<find>Educoder</find>
|
||||
<find>title</find>
|
||||
<find>textcount</find>
|
||||
<find>forks</find>
|
||||
<find>commentCtx</find>
|
||||
</findStrings>
|
||||
<dirStrings>
|
||||
<dir>$PROJECT_DIR$/src/forge</dir>
|
||||
<dir>$PROJECT_DIR$/src</dir>
|
||||
<dir>$PROJECT_DIR$</dir>
|
||||
</dirStrings>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
|
@ -90,11 +72,22 @@
|
|||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/src/AppConfig.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Order/Tags.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Version/NewVersion.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Order/newMilepost.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Order/Detail.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Index.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Main/CoderRootFileDetail.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Order/Tags.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Order/Milepost.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Merge/merge.js" />
|
||||
<option value="$PROJECT_DIR$/src/modules/tpm/NewHeader.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Order/New.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Main/Detail.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Order/Detail.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Order/UpdateDetail.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Order/CopyDetail.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Merge/NewMerge.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Merge/MessageCount.js" />
|
||||
<option value="$PROJECT_DIR$/src/forge/Merge/MergeSubmit.js" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
|
@ -114,6 +107,11 @@
|
|||
<item name="forgeplus-react" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="forgeplus-react" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="forgeplus-react" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="forgeplus-react" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="build" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="forgeplus-react" type="b2602c69:ProjectViewProjectNode" />
|
||||
<item name="forgeplus-react" type="462c0819:PsiDirectoryNode" />
|
||||
|
@ -130,7 +128,7 @@
|
|||
<item name="forgeplus-react" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="src" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="forge" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="Main" type="462c0819:PsiDirectoryNode" />
|
||||
<item name="Merge" type="462c0819:PsiDirectoryNode" />
|
||||
</path>
|
||||
</expand>
|
||||
<select />
|
||||
|
@ -171,25 +169,21 @@
|
|||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1584692398144</updated>
|
||||
<workItem from="1584692401543" duration="5996000" />
|
||||
<workItem from="1584692401543" duration="6228000" />
|
||||
<workItem from="1585015135223" duration="17366000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TimeTrackingManager">
|
||||
<option name="totallyTimeSpent" value="5996000" />
|
||||
<option name="totallyTimeSpent" value="23594000" />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="0" y="0" width="1440" height="900" extended-state="0" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Favorites" side_tool="true" />
|
||||
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.24964234" />
|
||||
<window_info content_ui="combo" id="Project" order="0" weight="0.2532189" />
|
||||
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Docker" show_stripe_button="false" />
|
||||
<window_info anchor="bottom" id="Database Changes" />
|
||||
<window_info anchor="bottom" id="Version Control" weight="0.47228914" />
|
||||
<window_info active="true" anchor="bottom" id="Terminal" visible="true" weight="0.49156627" />
|
||||
<window_info anchor="bottom" id="Event Log" side_tool="true" />
|
||||
<window_info id="Favorites" order="2" side_tool="true" />
|
||||
<window_info anchor="bottom" id="Message" order="0" />
|
||||
<window_info anchor="bottom" id="Find" order="1" />
|
||||
<window_info anchor="bottom" id="Run" order="2" />
|
||||
|
@ -197,10 +191,15 @@
|
|||
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
|
||||
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
|
||||
<window_info anchor="bottom" id="TODO" order="6" />
|
||||
<window_info anchor="right" id="Database" />
|
||||
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
|
||||
<window_info anchor="bottom" id="Database Changes" order="8" />
|
||||
<window_info anchor="bottom" id="Version Control" order="9" weight="0.47228914" />
|
||||
<window_info active="true" anchor="bottom" id="Terminal" order="10" visible="true" weight="0.17228916" />
|
||||
<window_info anchor="bottom" id="Event Log" order="11" side_tool="true" />
|
||||
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
|
||||
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
|
||||
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
|
||||
<window_info anchor="right" id="Database" order="3" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
|
@ -236,25 +235,6 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Order/Milepost.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<folding>
|
||||
<element signature="e#0#40#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Order/Tags.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-3771">
|
||||
<caret line="70" column="25" selection-start-line="70" selection-start-column="25" selection-end-line="70" selection-end-column="25" />
|
||||
<folding>
|
||||
<element signature="e#0#40#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Order/newMilepost.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="87">
|
||||
|
@ -275,19 +255,9 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Order/OrderItem.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="295">
|
||||
<caret line="19" column="25" selection-start-line="19" selection-start-column="25" selection-end-line="19" selection-end-column="25" />
|
||||
<folding>
|
||||
<element signature="e#0#42#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Order/order.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="231">
|
||||
<state relative-caret-position="221">
|
||||
<caret line="23" column="19" selection-start-line="23" selection-start-column="19" selection-end-line="23" selection-end-column="19" />
|
||||
<folding>
|
||||
<element signature="e#0#42#0" expanded="true" />
|
||||
|
@ -304,17 +274,220 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="255">
|
||||
<caret line="33" column="4" selection-start-line="33" selection-start-column="4" selection-end-line="33" selection-end-column="4" />
|
||||
<folding>
|
||||
<element signature="e#0#26#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/modules/home/shixunsHome.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-5268">
|
||||
<folding>
|
||||
<element signature="e#0#41#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Main/CoderRootFileDetail.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="166">
|
||||
<caret line="58" column="29" selection-start-line="58" selection-start-column="29" selection-end-line="58" selection-end-column="29" />
|
||||
<state relative-caret-position="277">
|
||||
<caret line="64" column="45" selection-start-line="64" selection-start-column="45" selection-end-line="64" selection-end-column="45" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Main/IndexItem.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="209">
|
||||
<caret line="35" column="23" selection-start-line="35" selection-start-column="23" selection-end-line="35" selection-end-column="23" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Merge/merge.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="270">
|
||||
<caret line="276" column="20" selection-start-line="276" selection-start-column="20" selection-end-line="276" selection-end-column="20" />
|
||||
<folding>
|
||||
<element signature="e#0#42#0" expanded="true" />
|
||||
<element signature="e#6583#7400#0" />
|
||||
<element signature="e#7409#9273#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="187">
|
||||
<caret line="11" selection-start-line="11" selection-end-line="11" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Order/Tags.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="337">
|
||||
<caret line="319" column="18" selection-start-line="319" selection-start-column="18" selection-end-line="319" selection-end-column="18" />
|
||||
<folding>
|
||||
<element signature="e#0#40#0" expanded="true" />
|
||||
<element signature="e#6599#6910#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Order/Milepost.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="172">
|
||||
<caret line="280" column="38" selection-start-line="280" selection-start-column="38" selection-end-line="280" selection-end-column="38" />
|
||||
<folding>
|
||||
<element signature="e#0#40#0" expanded="true" />
|
||||
<element signature="e#4332#4367#0" />
|
||||
<element signature="e#4350#5226#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Order/OrderItem.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="323">
|
||||
<caret line="19" column="25" selection-start-line="19" selection-start-column="25" selection-end-line="19" selection-end-column="25" />
|
||||
<folding>
|
||||
<element signature="e#0#42#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/quillForEditor/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="125">
|
||||
<caret line="46" column="7" selection-start-line="46" selection-start-column="2" selection-end-line="46" selection-end-column="7" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Merge/NewMerge.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="101">
|
||||
<caret line="202" column="40" selection-start-line="202" selection-start-column="40" selection-end-line="202" selection-end-column="40" />
|
||||
<folding>
|
||||
<element signature="e#0#40#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Order/CopyDetail.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="360">
|
||||
<caret line="242" column="24" selection-start-line="242" selection-start-column="24" selection-end-line="242" selection-end-column="24" />
|
||||
<folding>
|
||||
<element signature="e#0#40#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/App.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="173">
|
||||
<caret line="178" column="31" selection-start-line="178" selection-start-column="31" selection-end-line="178" selection-end-column="31" />
|
||||
<folding>
|
||||
<element signature="e#0#39#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/build/index.html">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-462">
|
||||
<caret column="512" selection-start-column="512" selection-end-column="512" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/public/index.html">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="233">
|
||||
<caret line="25" column="20" selection-start-line="25" selection-start-column="20" selection-end-line="25" selection-end-column="20" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/New/Index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state>
|
||||
<folding>
|
||||
<element signature="e#0#42#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/modules/tpm/NewHeader.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="334">
|
||||
<caret line="111" column="9" lean-forward="true" selection-start-line="111" selection-start-column="9" selection-end-line="111" selection-end-column="9" />
|
||||
<folding>
|
||||
<element signature="e#0#41#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Order/UpdateDetail.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="175">
|
||||
<caret line="137" column="7" selection-start-line="137" selection-start-column="7" selection-end-line="137" selection-end-column="7" />
|
||||
<folding>
|
||||
<element signature="e#1439#2512#0" />
|
||||
<element signature="e#2533#2593#0" />
|
||||
<element signature="e#2616#2676#0" />
|
||||
<element signature="e#2694#2754#0" />
|
||||
<element signature="e#2875#2951#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/index.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="221">
|
||||
<caret line="13" selection-start-line="13" selection-end-line="13" />
|
||||
<folding>
|
||||
<element signature="e#0#26#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Main/Detail.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="260">
|
||||
<caret line="495" column="3" lean-forward="true" selection-start-line="495" selection-start-column="3" selection-end-line="495" selection-end-column="3" />
|
||||
<folding>
|
||||
<element signature="e#0#42#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Order/Detail.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="2342">
|
||||
<caret line="436" column="13" selection-start-line="436" selection-start-column="13" selection-end-line="436" selection-end-column="13" />
|
||||
<state relative-caret-position="300">
|
||||
<caret line="327" lean-forward="true" selection-start-line="327" selection-end-line="327" />
|
||||
<folding>
|
||||
<element signature="e#0#40#0" expanded="true" />
|
||||
<element signature="e#15286#16091#0" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Merge/MessageCount.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="32">
|
||||
<caret line="428" column="11" selection-start-line="428" selection-start-column="11" selection-end-line="428" selection-end-column="238" />
|
||||
<folding>
|
||||
<element signature="e#0#40#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/forge/Merge/MergeSubmit.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="222">
|
||||
<caret line="175" column="212" lean-forward="true" selection-start-line="175" selection-start-column="212" selection-end-line="175" selection-end-column="212" />
|
||||
<folding>
|
||||
<element signature="e#0#40#0" expanded="true" />
|
||||
</folding>
|
||||
|
|
|
@ -481,7 +481,7 @@ class App extends Component {
|
|||
this.setState({
|
||||
mygetHelmetapi: undefined
|
||||
});
|
||||
document.title = "EduCoder";
|
||||
document.title = "Forge";
|
||||
var link = document.createElement('link'),
|
||||
oldLink = document.getElementById('dynamic-favicon');
|
||||
link.id = 'dynamic-favicon';
|
||||
|
|
|
@ -33,14 +33,8 @@ const ProjectDetail = Loadable({
|
|||
})
|
||||
|
||||
class Index extends Component{
|
||||
constructor(props){
|
||||
super(props);
|
||||
}
|
||||
|
||||
|
||||
|
||||
render(){
|
||||
console.log("123",this.props);
|
||||
return(
|
||||
<div className="newMain clearfix">
|
||||
<Switch {...this.props}>
|
||||
|
|
|
@ -57,12 +57,13 @@ class CoderRootFileDetail extends Component{
|
|||
axios.delete(url,{
|
||||
params:{
|
||||
filepath:detail.path,
|
||||
branch
|
||||
branch,
|
||||
sha:detail.sha
|
||||
}
|
||||
}).then(result=>{
|
||||
if(result){
|
||||
this.props.showNotification("删除成功!");
|
||||
this.props.history.push(`/projects/${projectsId}/${authorLogin}`);
|
||||
this.props.history.push(`/projects/${projectsId}`);
|
||||
}
|
||||
}).catch(error=>{
|
||||
console.log(error);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import React , { Component } from 'react';
|
||||
import { Link , Route , Switch } from 'react-router-dom';
|
||||
import { Spin } from 'antd';
|
||||
import { Link , Route , Switch,withRouter } from 'react-router-dom';
|
||||
|
||||
import '../css/index.css'
|
||||
import './list.css';
|
||||
|
@ -124,10 +125,12 @@ const TrendsIndex = Loadable({
|
|||
/**
|
||||
* permission:Manager:管理员,Reporter:报告人员(只有读取权限),Developer:开发人员(除不能设置仓库信息外)
|
||||
*/
|
||||
|
||||
class Detail extends Component{
|
||||
constructor(props){
|
||||
super(props);
|
||||
this.state={
|
||||
isSpin:false,
|
||||
projectDetail:undefined,
|
||||
isManager:false,
|
||||
isReporter:false,
|
||||
|
@ -138,7 +141,7 @@ class Detail extends Component{
|
|||
forked_count:undefined,
|
||||
http_url: undefined,
|
||||
author:undefined,
|
||||
current_user:undefined,
|
||||
// current_user:undefined,
|
||||
|
||||
branchs:undefined,
|
||||
branchList:undefined,
|
||||
|
@ -161,15 +164,15 @@ class Detail extends Component{
|
|||
|
||||
|
||||
componentDidMount=()=>{
|
||||
this.getUserInfo();
|
||||
this.getDetail();
|
||||
}
|
||||
|
||||
// componentDidUpdate=(provState)=>{
|
||||
// if(provState.match.params.projectsId !== this.props.match.params.projectsId){
|
||||
// this.getDetail();
|
||||
// }
|
||||
// }
|
||||
componentDidUpdate=(prevState)=>{
|
||||
if(prevState.match.params.projectsId !== this.props.match.params.projectsId){
|
||||
this.getDetail();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
getDetail=()=>{
|
||||
const { projectsId } = this.props.match.params;
|
||||
|
@ -246,11 +249,18 @@ class Detail extends Component{
|
|||
|
||||
// fork项目
|
||||
forkFunc=()=>{
|
||||
this.setState({
|
||||
isSpin:true
|
||||
})
|
||||
const { project_id } = this.state;
|
||||
const url = `/projects/${project_id}/forks.json`;
|
||||
axios.post(url).then(result=>{
|
||||
if(result && result.data.status === 0){
|
||||
this.props.history.push(`/projects/${result.data.identifier}/coders`);
|
||||
this.props.history.push(`/projects/${result.data.id}/coders`);
|
||||
this.props.showNotification(result.data.message);
|
||||
this.setState({
|
||||
isSpin:false
|
||||
})
|
||||
}else{
|
||||
this.props.showNotification(result.data.message);
|
||||
}
|
||||
|
@ -274,7 +284,6 @@ class Detail extends Component{
|
|||
branchList:result.data,
|
||||
branchs,
|
||||
branchLastCommit:result.data[0],
|
||||
// http_url:result.data[0].http_url
|
||||
})
|
||||
}
|
||||
}).catch((error)=>{})
|
||||
|
@ -282,220 +291,224 @@ class Detail extends Component{
|
|||
|
||||
render(){
|
||||
|
||||
const { projectDetail , watchers_count , praises_count , forked_count , project_id , current_user } = this.state;
|
||||
const { projectDetail , watchers_count , praises_count , forked_count , isSpin } = this.state;
|
||||
const url = this.props.history.location.pathname;
|
||||
const urlArr= url.split("/");
|
||||
const urlFlag = (urlArr.length === 3);
|
||||
const { isManager , isDeveloper } = this.props;
|
||||
|
||||
const { isManager } = this.props;
|
||||
const { projectsId } = this.props.match.params;
|
||||
|
||||
const { state } = this.props.history.location;
|
||||
|
||||
return(
|
||||
<div>
|
||||
<div className="detailHeader-wrapper">
|
||||
<div className="normal">
|
||||
<div className="f-wrap-between mb20">
|
||||
<p className="font-18 color-white df flex-1 lineH2 mt15" style={{alignItems:"center"}}>
|
||||
{projectDetail && projectDetail.author && projectDetail.author.name}
|
||||
<span className="ml5 mr5">/</span>
|
||||
<span className="hide-1 flex-1">
|
||||
<Link to={`/projects/${projectsId}/coders`} className="color-white">{ projectDetail && projectDetail.name }</Link>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div className="f-wrap-between">
|
||||
<ul className="headerMenu-wrapper">
|
||||
<li className={(url.indexOf("coders")>-1 || urlFlag) ? "active" : ""}><Link to={{pathname:`/projects/${projectsId}/coders`,state}}><img alt="" src={img_1} width="18" />代码</Link></li>
|
||||
<li className={url.indexOf("orders")>-1 ? "active" : ""}><Link to={{pathname:`/projects/${projectsId}/orders`,state}}><img alt="" src={img_2} width="12" />工单{projectDetail&&projectDetail.issues_count===0?"":projectDetail&&projectDetail.issues_count===0?projectDetail.issues_count:""}</Link></li>
|
||||
<li className={url.indexOf("merge")>-1 ? "active" : ""}><Link to={{pathname:`/projects/${projectsId}/merge`,state}}><img alt="" src={img_3} width="13" />合并请求{projectDetail&&projectDetail.pull_requests_count===0?"":projectDetail&&projectDetail.pull_requests_count===0?projectDetail.pull_requests_count:""}</Link></li>
|
||||
<li className={url.indexOf("version")>-1 ? "active" : ""}><Link to={{pathname:`/projects/${projectsId}/version`,state}}><img alt="" src={img_4} width="16" />版本发布</Link></li>
|
||||
<li className={url.indexOf("trends")>-1 ? "active" : ""}><Link to={{pathname:`/projects/${projectsId}/trends`,state}}><img alt="" src={img_6} width="16" />动态</Link></li>
|
||||
{
|
||||
isManager &&
|
||||
<li className={url.indexOf("setting")>0 ? "active" : ""}><Link to={`/projects/${projectsId}/setting`}><img alt="" src={img_7} width="19" />仓库设置</Link></li>
|
||||
}
|
||||
</ul>
|
||||
<span className="df">
|
||||
<span className="detail_tag_btn">
|
||||
<a className="detail_tag_btn_name" onClick={()=>this.focusFunc(projectDetail && projectDetail.watched)}>
|
||||
<img src={projectDetail && projectDetail.watched ? img_focused : img_focus} alt="" width="14px"/>
|
||||
{projectDetail && projectDetail.watched ? '取消关注':'关注'}
|
||||
</a>
|
||||
<span className="detail_tag_btn_count">{watchers_count}</span>
|
||||
<Spin spinning={isSpin}>
|
||||
<div className="detailHeader-wrapper">
|
||||
<div className="normal">
|
||||
<div className="f-wrap-between mb20">
|
||||
<p className="font-18 color-white df flex-1 lineH2 mt15" style={{alignItems:"center"}}>
|
||||
{projectDetail && projectDetail.author && projectDetail.author.name}
|
||||
<span className="ml5 mr5">/</span>
|
||||
<span className="hide-1 flex-1">
|
||||
<Link to={`/projects/${projectsId}/coders`} className="color-white">{ projectDetail && projectDetail.name }</Link>
|
||||
</span>
|
||||
</p>
|
||||
</div>
|
||||
<div className="f-wrap-between">
|
||||
<ul className="headerMenu-wrapper">
|
||||
<li className={(url.indexOf("coders")>-1 || urlFlag) ? "active" : ""}><Link to={{pathname:`/projects/${projectsId}/coders`,state}}><img alt="" src={img_1} width="18" />代码</Link></li>
|
||||
<li className={url.indexOf("orders")>-1 ? "active" : ""}><Link to={{pathname:`/projects/${projectsId}/orders`,state}}><img alt="" src={img_2} width="12" />工单{projectDetail&&projectDetail.issues_count===0?"":projectDetail&&projectDetail.issues_count===0?projectDetail.issues_count:""}</Link></li>
|
||||
<li className={url.indexOf("merge")>-1 ? "active" : ""}><Link to={{pathname:`/projects/${projectsId}/merge`,state}}><img alt="" src={img_3} width="13" />合并请求{projectDetail&&projectDetail.pull_requests_count===0?"":projectDetail&&projectDetail.pull_requests_count===0?projectDetail.pull_requests_count:""}</Link></li>
|
||||
<li className={url.indexOf("version")>-1 ? "active" : ""}><Link to={{pathname:`/projects/${projectsId}/version`,state}}><img alt="" src={img_4} width="16" />版本发布</Link></li>
|
||||
<li className={url.indexOf("trends")>-1 ? "active" : ""}><Link to={{pathname:`/projects/${projectsId}/trends`,state}}><img alt="" src={img_6} width="16" />动态</Link></li>
|
||||
{
|
||||
isManager &&
|
||||
<li className={url.indexOf("setting")>0 ? "active" : ""}><Link to={`/projects/${projectsId}/setting`}><img alt="" src={img_7} width="19" />仓库设置</Link></li>
|
||||
}
|
||||
</ul>
|
||||
<span className="df">
|
||||
<span className="detail_tag_btn">
|
||||
<a className="detail_tag_btn_name" onClick={()=>this.focusFunc(projectDetail && projectDetail.watched)}>
|
||||
<img src={projectDetail && projectDetail.watched ? img_focused : img_focus} alt="" width="14px"/>
|
||||
{projectDetail && projectDetail.watched ? '取消关注':'关注'}
|
||||
</a>
|
||||
<span className="detail_tag_btn_count">{watchers_count}</span>
|
||||
</span>
|
||||
<span className="detail_tag_btn">
|
||||
<a className="detail_tag_btn_name" onClick={()=>this.pariseFunc(projectDetail && projectDetail.praised)}>
|
||||
<img src={projectDetail && projectDetail.praised ? img_parised : img_parise} width="13px" alt=""/>
|
||||
{projectDetail && projectDetail.praised ? '取消点赞':'点赞'}
|
||||
</a>
|
||||
<span className="detail_tag_btn_count">{praises_count}</span>
|
||||
</span>
|
||||
<span className="detail_tag_btn">
|
||||
<a className="detail_tag_btn_name" onClick={this.forkFunc}>
|
||||
<img src={img_fork} alt="" width="10px"/>Fork</a>
|
||||
<span className="detail_tag_btn_count">{forked_count}</span>
|
||||
</span>
|
||||
</span>
|
||||
<span className="detail_tag_btn">
|
||||
<a className="detail_tag_btn_name" onClick={()=>this.pariseFunc(projectDetail && projectDetail.praised)}>
|
||||
<img src={projectDetail && projectDetail.praised ? img_parised : img_parise} width="13px" alt=""/>
|
||||
{projectDetail && projectDetail.praised ? '取消点赞':'点赞'}
|
||||
</a>
|
||||
<span className="detail_tag_btn_count">{praises_count}</span>
|
||||
</span>
|
||||
<span className="detail_tag_btn">
|
||||
<a className="detail_tag_btn_name" onClick={this.forkFunc}>
|
||||
<img src={img_fork} alt="" width="10px"/>Fork</a>
|
||||
<span className="detail_tag_btn_count">{forked_count}</span>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<Switch {...this.props}>
|
||||
{/* 新建文件 */}
|
||||
<Route path="/projects/:projectsId/coders/:branch/newfile/:path"
|
||||
render={
|
||||
(props) => (<FileNew {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
<Route path="/projects/:projectsId/coders/:branch/newfile"
|
||||
render={
|
||||
(props) => (<FileNew {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
<Switch {...this.props}>
|
||||
{/* 新建文件 */}
|
||||
<Route path="/projects/:projectsId/coders/:branch/newfile/:path"
|
||||
render={
|
||||
(props) => (<FileNew {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
<Route path="/projects/:projectsId/coders/:branch/newfile"
|
||||
render={
|
||||
(props) => (<FileNew {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
|
||||
{/* 标签列表 */}
|
||||
<Route path="/projects/:projectsId/orders/tags"
|
||||
render={
|
||||
(props) => (<TagList {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 仓库设置 */}
|
||||
<Route path="/projects/:projectsId/setting"
|
||||
render={
|
||||
(props) => (<Setting {...this.props} {...props} {...this.state} getDetail={this.getDetail} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 工单详情 */}
|
||||
<Route path="/projects/:projectsId/orders/:orderId/detail"
|
||||
render={
|
||||
(props) => (<OrderDetail {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 里程碑 */}
|
||||
<Route path="/projects/:projectsId/orders/Milepost"
|
||||
render={
|
||||
(props) => (<OrderMilepost {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 新建里程碑 */}
|
||||
<Route path="/projects/:projectsId/orders/meilpost"
|
||||
render={
|
||||
(props) => (<OrdernewMilepost {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
{/*里程碑详情*/ }
|
||||
<Route path="/projects/:projectsId/orders/:meilid/MilepostDetail"
|
||||
render={
|
||||
(props) => (<MilepostDetail {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
{/*修改里程碑*/}
|
||||
<Route path="/projects/:projectsId/orders/:meilid/meilpost"
|
||||
render={
|
||||
(props) => (<OrderupdateMilepost {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 标签列表 */}
|
||||
<Route path="/projects/:projectsId/orders/tags"
|
||||
render={
|
||||
(props) => (<TagList {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 仓库设置 */}
|
||||
<Route path="/projects/:projectsId/setting"
|
||||
render={
|
||||
(props) => (<Setting {...this.props} {...props} {...this.state} getDetail={this.getDetail}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 工单详情 */}
|
||||
<Route path="/projects/:projectsId/orders/:orderId/detail"
|
||||
render={
|
||||
(props) => (<OrderDetail {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 里程碑 */}
|
||||
<Route path="/projects/:projectsId/orders/Milepost"
|
||||
render={
|
||||
(props) => (<OrderMilepost {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 新建里程碑 */}
|
||||
<Route path="/projects/:projectsId/orders/meilpost"
|
||||
render={
|
||||
(props) => (<OrdernewMilepost {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
{/*里程碑详情*/ }
|
||||
<Route path="/projects/:projectsId/orders/:meilid/MilepostDetail"
|
||||
render={
|
||||
(props) => (<MilepostDetail {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
{/*修改里程碑*/}
|
||||
<Route path="/projects/:projectsId/orders/:meilid/meilpost"
|
||||
render={
|
||||
(props) => (<OrderupdateMilepost {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
|
||||
|
||||
{/* 新建工单 */}
|
||||
{/* 新建工单 */}
|
||||
|
||||
<Route path="/projects/:projectsId/orders/new"
|
||||
render={
|
||||
(props) => (<OrderNew {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
<Route path="/projects/:projectsId/orders/new"
|
||||
render={
|
||||
(props) => (<OrderNew {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
|
||||
{/* 修改详情 */}
|
||||
<Route path="/projects/:projectsId/orders/:orderId/updatedetail"
|
||||
render={
|
||||
(props) => (<OrderupdateDetail {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 修改详情 */}
|
||||
<Route path="/projects/:projectsId/orders/:orderId/updatedetail"
|
||||
render={
|
||||
(props) => (<OrderupdateDetail {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
|
||||
{/* 复制详情 */}
|
||||
<Route path="/projects/:projectsId/orders/:orderId/copyetail"
|
||||
render={
|
||||
(props) => (<OrdercopyDetail {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 复制详情 */}
|
||||
<Route path="/projects/:projectsId/orders/:orderId/copyetail"
|
||||
render={
|
||||
(props) => (<OrdercopyDetail {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
|
||||
{/* 动态 */}
|
||||
<Route path="/projects/:projectsId/trends"
|
||||
render={
|
||||
(props) => (<TrendsIndex {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 动态 */}
|
||||
<Route path="/projects/:projectsId/trends"
|
||||
render={
|
||||
(props) => (<TrendsIndex {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
|
||||
|
||||
{/* 代码Index */}
|
||||
<Route path="/projects/:projectsId/orders"
|
||||
render={
|
||||
(props) => (<OrderIndex {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
{/* 代码Index */}
|
||||
<Route path="/projects/:projectsId/orders"
|
||||
render={
|
||||
(props) => (<OrderIndex {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
|
||||
<Route path="/projects/:projectsId/merge/new"
|
||||
render={
|
||||
(props) => (<CreateMerge {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
<Route path="/projects/:projectsId/merge/new"
|
||||
render={
|
||||
(props) => (<CreateMerge {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
|
||||
<Route path="/projects/:projectsId/merge/:mergeId/UpdateMerge"
|
||||
render={
|
||||
(props) => (<UpdateMerge {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
<Route path="/projects/:projectsId/merge/:mergeId/UpdateMerge"
|
||||
render={
|
||||
(props) => (<UpdateMerge {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
|
||||
<Route path="/projects/:projectsId/merge/:mergeId/Messagecount"
|
||||
render={
|
||||
(props) => (<MessageCount {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
<Route path="/projects/:projectsId/merge/:mergeId/Messagecount"
|
||||
render={
|
||||
(props) => (<MessageCount {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
|
||||
<Route path="/projects/:projectsId/merge/:mergeId/MergeSubmit"
|
||||
render={
|
||||
(props) => (<MergeSubmit {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
<Route path="/projects/:projectsId/version/new"
|
||||
render={
|
||||
(props) => (<NewVersionIndex {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
<Route path="/projects/:projectsId/merge/:mergeId/MergeSubmit"
|
||||
render={
|
||||
(props) => (<MergeSubmit {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
<Route path="/projects/:projectsId/version/new"
|
||||
render={
|
||||
(props) => (<NewVersionIndex {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
|
||||
|
||||
<Route path="/projects/:projectsId/version/:versionId/upversion"
|
||||
render={
|
||||
(props) => (<UpVersionIndex {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
<Route path="/projects/:projectsId/version/:versionId/upversion"
|
||||
render={
|
||||
(props) => (<UpVersionIndex {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
|
||||
|
||||
<Route path="/projects/:projectsId/version"
|
||||
render={
|
||||
(props) => (<VersionIndex {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
<Route path="/projects/:projectsId/version"
|
||||
render={
|
||||
(props) => (<VersionIndex {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
|
||||
<Route path="/projects/:projectsId/merge"
|
||||
render={
|
||||
(props) => (<MergeIndexDetail {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
<Route path="/projects/:projectsId/coders"
|
||||
render={
|
||||
(props) => (<CoderRootIndex {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
<Route path="/projects/:projectsId"
|
||||
render={
|
||||
(props) => (<CoderRootIndex {...this.props} {...props} {...this.state} current_user={current_user}/>)
|
||||
}
|
||||
></Route>
|
||||
</Switch>
|
||||
<Route path="/projects/:projectsId/merge"
|
||||
render={
|
||||
(props) => (<MergeIndexDetail {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
<Route path="/projects/:projectsId/coders"
|
||||
render={
|
||||
(props) => (<CoderRootIndex {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
<Route path="/projects/:projectsId"
|
||||
render={
|
||||
(props) => (<CoderRootIndex {...this.props} {...props} {...this.state}/>)
|
||||
}
|
||||
></Route>
|
||||
</Switch>
|
||||
</Spin>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
export default Detail;
|
||||
export default withRouter(Detail);
|
||||
|
|
|
@ -177,6 +177,7 @@ class Index extends Component{
|
|||
}
|
||||
|
||||
render(){
|
||||
const { current_user } = this.props;
|
||||
const menu=(
|
||||
<Menu onClick={this.ChangeSoryBy}>
|
||||
<Menu.Item key="updated_on">更新时间排序</Menu.Item>
|
||||
|
@ -200,6 +201,8 @@ class Index extends Component{
|
|||
<Pagination simple defaultCurrent={page} total={total} pageSize={limit} onChange={this.ChangePage}></Pagination>
|
||||
</div>:""
|
||||
)
|
||||
|
||||
|
||||
return(
|
||||
<div style={{background:"#fafafa"}}>
|
||||
<p className="t_project_banner"></p>
|
||||
|
@ -218,12 +221,14 @@ class Index extends Component{
|
|||
<Spin spinning={isSpin}>
|
||||
<div className="list-r-operation">
|
||||
<div>
|
||||
|
||||
<Dropdown overlay={newItem} trigger={["click"]} placement='bottomRight' className="mr30">
|
||||
<a className="ant-dropdown-link">
|
||||
<span className="color-blue font-16"><img src={img_new} alt="" width="13px"/> 新建</span>
|
||||
</a>
|
||||
</Dropdown>
|
||||
{
|
||||
current_user && current_user.login &&
|
||||
<Dropdown overlay={newItem} trigger={["click"]} placement='bottomRight' className="mr30">
|
||||
<a className="ant-dropdown-link">
|
||||
<span className="color-blue font-16"><img src={img_new} alt="" width="13px"/> 新建</span>
|
||||
</a>
|
||||
</Dropdown>
|
||||
}
|
||||
|
||||
<Dropdown overlay={menu} trigger={['click']} placement='bottomRight'>
|
||||
<a className="ant-dropdown-link">
|
||||
|
|
|
@ -165,7 +165,7 @@ class MergeSubmit extends Component{
|
|||
<p>
|
||||
{
|
||||
data ?
|
||||
<span className="font-20">【{ data.issue.tracker}】</span>
|
||||
<span className="font-20">【{ data.issue.issue_classify==='issue'?data.issue.tracker:"合并"}】</span>
|
||||
:
|
||||
""
|
||||
}
|
||||
|
@ -173,7 +173,7 @@ class MergeSubmit extends Component{
|
|||
|
||||
</p>
|
||||
<p className="mt10 color-grey-c">
|
||||
<span className={data&&data.issue.issue_status==="关闭"?"closedetail":"opendetail"}>{data&&data.issue.issue_status==="关闭"?"关闭中":"开启中"} </span>
|
||||
<span className={data&&data.issue.issue_status==="关闭"?"closedetail":data&&data.pull_request.status===0?"opendetail":"prdetail"}>{data&&data.issue.issue_status==="关闭"?"关闭中":data&&data.pull_request.status===0?"开启中":"已合并"} </span>
|
||||
<span className="ml10 lineH32">
|
||||
由 { data && data.issue.author_name} 于 { data && data.issue.created_at }创建{ data && data.issue.journals_count && data.issue.journals_count > 0 ?` · ${data.issue.journals_count} 条评论`:""}
|
||||
</span>
|
||||
|
|
|
@ -476,8 +476,8 @@ class MessageCount extends Component{
|
|||
</p>
|
||||
|
||||
<div style={{display:this.state.ismesrge,marginTop:15}}>
|
||||
<Input placeholder="标题" value={this.state.title} onChange={this.changtitlepr}/>
|
||||
<TextArea placeholder="=描述..." style={{height:"300px",marginTop:15}} value={this.state.body} onChange={this.changbodypr} />
|
||||
<Input placeholder="合并请求标题" value={this.state.title} onChange={this.changtitlepr}/>
|
||||
<TextArea placeholder="合并请求描述..." style={{height:"300px",marginTop:15}} value={this.state.body} onChange={this.changbodypr} />
|
||||
</div>
|
||||
<p className="clearfix mt15" style={{display:this.state.buttonshow}}>
|
||||
<a className="topWrapper_btn " type="submit" onClick={()=>this.prmerge()}>合并请求</a>
|
||||
|
|
|
@ -201,7 +201,7 @@ class NewMerge extends Component{
|
|||
|
||||
ischeckmerge=(head,base)=>{
|
||||
const { projectsId } = this.props.match.params;
|
||||
const url = `/projects/${projectsId}/pull_requests/check_can_merge`;
|
||||
const url = `/projects/${projectsId}/pull_requests/check_can_merge.json`;
|
||||
axios.post(url,{
|
||||
project_id:projectsId,
|
||||
head:head,
|
||||
|
|
|
@ -248,62 +248,73 @@ class merge extends Component{
|
|||
<div className="main">
|
||||
<div className="topWrapper">
|
||||
<Nav {...this.props} {...this.state}/>
|
||||
<Link to={`/projects/${projectsId}/merge/new`} className="topWrapper_btn">创建合并请求</Link>
|
||||
</div>
|
||||
<div className="topWrapper" style={{borderBottom:"none"}}>
|
||||
<p className="topWrapper_type">
|
||||
<li className={openselect ? "active":""} onClick={()=>this.openorder(1)}>{data && data.open_count}个开启中</li>
|
||||
<li className={closeselect ? "active":""} onClick={()=>this.openorder(2)}>{data && data.close_count}个已关闭</li>
|
||||
{/* <span onClick={this.openorder} className={author_id ? "active":""}>{data && data.open_count}个开启中</span>
|
||||
<span onClick={this.closeorder} className={author_id ? "active":""}>{data && data.close_count}个已关闭</span> */}
|
||||
</p>
|
||||
<div>
|
||||
<Search
|
||||
placeholder="搜索"
|
||||
enterButton
|
||||
onSearch={this.searchFunc}
|
||||
style={{ width: 300 }}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<Spin spinning={isSpin}>
|
||||
<div className="f-wrap-between mb20">
|
||||
<ul >
|
||||
<li> </li>
|
||||
</ul>
|
||||
<ul className="topWrapper_select">
|
||||
<li>
|
||||
<Dropdown className="topWrapperSelect" overlay={this.renderMenu(issue_chosen && issue_chosen.issue_tag,'标签','issue_tag_id')} trigger={['click']} placement="bottomCenter">
|
||||
<span>{this.state.issue_tag_ids}<Icon type="caret-down" className="ml5" /></span>
|
||||
</Dropdown>
|
||||
</li>
|
||||
<li>
|
||||
<Dropdown className="topWrapperSelect" overlay={this.renderMenu(issue_chosen && issue_chosen.issue_version,'里程碑','fixed_version_id')} trigger={['click']} placement="bottomCenter">
|
||||
<span>{this.state.fixed_version_ids}<Icon type="caret-down" className="ml5" /></span>
|
||||
</Dropdown>
|
||||
</li>
|
||||
<li>
|
||||
<Dropdown className="topWrapperSelect" overlay={this.renderMenu(issue_chosen && issue_chosen.assign_user,'指派人','assigned_to_id')} trigger={['click']} placement="bottomCenter">
|
||||
<span>{this.state.assigned_to_ids}<Icon type="caret-down" className="ml5" /></span>
|
||||
</Dropdown>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<Dropdown className="topWrapperSelect" overlay={menu} trigger={['click']} placement="bottomCenter">
|
||||
<span>{this.state.paix}<Icon type="caret-down" className="ml5" /></span>
|
||||
</Dropdown>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{
|
||||
search_count === 0 ?
|
||||
<NoneData></NoneData>
|
||||
:
|
||||
<OrderItem issues={issues} search_count={search_count} page={page} limit={limit} {...this.props} {...this.state}></OrderItem>
|
||||
data && data.user_admin_or_member ?
|
||||
<Link to={`/projects/${projectsId}/merge/new`} className="topWrapper_btn">创建合并请求</Link>
|
||||
: ''
|
||||
}
|
||||
{ Paginations }
|
||||
</Spin>
|
||||
|
||||
</div>
|
||||
{
|
||||
data && data.search_count && data.search_count > 0 ?
|
||||
<div>
|
||||
<div className="topWrapper" style={{borderBottom:"none"}}>
|
||||
<p className="topWrapper_type">
|
||||
<li className={openselect ? "active":""} onClick={()=>this.openorder(1)}>{data && data.open_count}个开启中</li>
|
||||
<li className={closeselect ? "active":""} onClick={()=>this.openorder(2)}>{data && data.close_count}个已关闭</li>
|
||||
{/* <span onClick={this.openorder} className={author_id ? "active":""}>{data && data.open_count}个开启中</span>
|
||||
<span onClick={this.closeorder} className={author_id ? "active":""}>{data && data.close_count}个已关闭</span> */}
|
||||
</p>
|
||||
<div>
|
||||
<Search
|
||||
placeholder="搜索"
|
||||
enterButton
|
||||
onSearch={this.searchFunc}
|
||||
style={{ width: 300 }}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<Spin spinning={isSpin}>
|
||||
<div className="f-wrap-between mb20">
|
||||
<ul >
|
||||
<li> </li>
|
||||
</ul>
|
||||
<ul className="topWrapper_select">
|
||||
<li>
|
||||
<Dropdown className="topWrapperSelect" overlay={this.renderMenu(issue_chosen && issue_chosen.issue_tag,'标签','issue_tag_id')} trigger={['click']} placement="bottomCenter">
|
||||
<span>{this.state.issue_tag_ids}<Icon type="caret-down" className="ml5" /></span>
|
||||
</Dropdown>
|
||||
</li>
|
||||
<li>
|
||||
<Dropdown className="topWrapperSelect" overlay={this.renderMenu(issue_chosen && issue_chosen.issue_version,'里程碑','fixed_version_id')} trigger={['click']} placement="bottomCenter">
|
||||
<span>{this.state.fixed_version_ids}<Icon type="caret-down" className="ml5" /></span>
|
||||
</Dropdown>
|
||||
</li>
|
||||
<li>
|
||||
<Dropdown className="topWrapperSelect" overlay={this.renderMenu(issue_chosen && issue_chosen.assign_user,'指派人','assigned_to_id')} trigger={['click']} placement="bottomCenter">
|
||||
<span>{this.state.assigned_to_ids}<Icon type="caret-down" className="ml5" /></span>
|
||||
</Dropdown>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<Dropdown className="topWrapperSelect" overlay={menu} trigger={['click']} placement="bottomCenter">
|
||||
<span>{this.state.paix}<Icon type="caret-down" className="ml5" /></span>
|
||||
</Dropdown>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
{
|
||||
search_count === 0 ?
|
||||
<NoneData></NoneData>
|
||||
:
|
||||
<OrderItem issues={issues} search_count={search_count} page={page} limit={limit} {...this.props} {...this.state}></OrderItem>
|
||||
}
|
||||
{ Paginations }
|
||||
</Spin>
|
||||
</div>
|
||||
:
|
||||
<NoneData/>
|
||||
}
|
||||
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -23,7 +23,6 @@ class Index extends Component{
|
|||
GitignoreList:undefined,
|
||||
LicensesList:undefined,
|
||||
isSpin:false,
|
||||
current_user:undefined
|
||||
}
|
||||
}
|
||||
getUserInfo=()=>{
|
||||
|
@ -40,7 +39,7 @@ class Index extends Component{
|
|||
})
|
||||
}
|
||||
componentDidMount=()=>{
|
||||
this.getUserInfo();
|
||||
// this.getUserInfo();
|
||||
// 获取项目类别
|
||||
this.getCategory();
|
||||
// 获取项目语言
|
||||
|
@ -116,7 +115,7 @@ class Index extends Component{
|
|||
})
|
||||
this.props.form.validateFieldsAndScroll((err, values) => {
|
||||
if(!err){
|
||||
const { current_user } = this.state;
|
||||
const { current_user } = this.props;
|
||||
const { projectsType } =this.props.match.params;
|
||||
const url = projectsType === "deposit" ? "/projects.json" :"/projects/migrate.json";
|
||||
axios.post(url,{
|
||||
|
@ -129,7 +128,7 @@ class Index extends Component{
|
|||
isSpin:false
|
||||
})
|
||||
this.props.showNotification(`${projectsType === "deposit" ? "托管" :"镜像"}项目创建成功!`);
|
||||
this.props.history.push(`/projects/${result.data.identifier}/${current_user && current_user.login}/coders`);
|
||||
this.props.history.push(`/projects/${result.data.id}/coders`);
|
||||
}
|
||||
}
|
||||
}).catch((error)=>{
|
||||
|
@ -148,7 +147,6 @@ class Index extends Component{
|
|||
|
||||
render(){
|
||||
const { getFieldDecorator } = this.props.form;
|
||||
console.log(this.props);
|
||||
// 项目类型:deposit-托管项目,mirror-镜像项目
|
||||
const { projectsType } =this.props.match.params;
|
||||
const {
|
||||
|
@ -165,6 +163,8 @@ class Index extends Component{
|
|||
LicensesList,
|
||||
isSpin
|
||||
}=this.state;
|
||||
|
||||
console.log("current_user",this.props);
|
||||
return(
|
||||
<div className="main back-white">
|
||||
<div className="newPanel">
|
||||
|
|
|
@ -106,6 +106,16 @@ class CopyDetail extends Component{
|
|||
isShow:true
|
||||
});
|
||||
};
|
||||
stringJson=(value) =>{
|
||||
let _value = null;
|
||||
|
||||
try {
|
||||
_value = JSON.parse(value);
|
||||
} catch (e) {
|
||||
_value = value;
|
||||
}
|
||||
return _value
|
||||
}
|
||||
|
||||
//删除工单
|
||||
deleteorder=(id)=>{
|
||||
|
@ -225,9 +235,8 @@ class CopyDetail extends Component{
|
|||
)}
|
||||
</Form.Item>
|
||||
<div className="quillContent" style={{marginBottom:"20px"}}>
|
||||
<QuillForEditor
|
||||
value = {textcount}
|
||||
imgAttrs={{ width: '60px', height: '30px' }}
|
||||
<QuillForEditor
|
||||
value = {this.stringJson(textcount)}
|
||||
wrapStyle={{
|
||||
height: '220px',
|
||||
opacity:1,
|
||||
|
|
|
@ -309,7 +309,18 @@ class Detail extends Component{
|
|||
}
|
||||
|
||||
handleShowImage=(value)=>{
|
||||
console.log("imgOnclick",value);
|
||||
// console.log("imgOnclick",value);
|
||||
}
|
||||
|
||||
stringJson=(value) =>{
|
||||
let _value = null;
|
||||
|
||||
try {
|
||||
_value = JSON.parse(value);
|
||||
} catch (e) {
|
||||
_value = value;
|
||||
}
|
||||
return _value
|
||||
}
|
||||
|
||||
commentCtx = (ctx) => {
|
||||
|
@ -387,7 +398,26 @@ class Detail extends Component{
|
|||
}
|
||||
</div>
|
||||
<div style={{display: (isedit && isedit === item.id) ? "block" : "none"}}>
|
||||
<TextArea style={{height:"200px"}} value={this.state.countvalue} onChange={this.changmodelname}/>
|
||||
<div className="quillContent">
|
||||
<QuillForEditor
|
||||
wrapStyle={{
|
||||
height: '220px',
|
||||
opacity:1,
|
||||
}}
|
||||
autoFocus={true}
|
||||
style={{ height: '150px' }}
|
||||
placeholder="添加评论..."
|
||||
options={options}
|
||||
value={this.stringJson(this.state.countvalue)}
|
||||
onContentChange={this.onContentChange}
|
||||
showUploadImage={this.handleShowImage}
|
||||
// onContentChange={handleContentChange}
|
||||
/>
|
||||
<p className="quillFlag">
|
||||
{ quillFlag && <span className="">请输入评论内容</span>}
|
||||
</p>
|
||||
</div>
|
||||
{/*<TextArea style={{height:"200px"}} value={this.state.countvalue} onChange={this.changmodelname}/>*/}
|
||||
<p className="clearfix mt15">
|
||||
<a className="topWrapper_btn fr" type="submit" onClick={()=>this.updatedetail(item.id)}>保存</a>
|
||||
<a className="a_btn cancel_btn fr" type="submit" onClick={()=>this.editdetail(item.content,undefined)}>取消</a>
|
||||
|
@ -492,7 +522,7 @@ class Detail extends Component{
|
|||
<div className="new_context">
|
||||
<div className="quillContent">
|
||||
<QuillForEditor
|
||||
imgAttrs={{ width: '30px' }}
|
||||
|
||||
wrapStyle={{
|
||||
height: '220px',
|
||||
opacity:1,
|
||||
|
|
|
@ -172,12 +172,28 @@ class Milepost extends Component{
|
|||
const renderList =()=>{
|
||||
if(data && data.versions && data.versions.length>0 ){
|
||||
return(
|
||||
<div className="tagList">
|
||||
{
|
||||
data.versions.map((item,key)=>{
|
||||
return(
|
||||
<div style={{display:'block'}}>
|
||||
<div className="milepostdiv">
|
||||
<div>
|
||||
<div className="topWrapper">
|
||||
<div className="topWrapper_type">
|
||||
<li className={openselect ? "active":""} onClick={()=>this.opneMilelist(1)}>{data && data.open_count}个开启中</li>
|
||||
<li className={closeselect ? "active":""} onClick={()=>this.opneMilelist(2)}>{data && data.closed_count}个已关闭</li>
|
||||
{/* <span onClick={this.opneMilelist}>{ data && data.open_count }开启中</span>
|
||||
<span onClick={this.closeMilelist}>{ data && data.closed_count }已关闭</span> */}
|
||||
</div>
|
||||
<ul className="topWrapper_select">
|
||||
<li>
|
||||
<Dropdown className="topWrapperSelect" overlay={menu} trigger={['click']} placement="bottomCenter">
|
||||
<span>排序<Icon type="caret-down" className="ml5" /></span>
|
||||
</Dropdown>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div className="tagList">
|
||||
{
|
||||
data.versions.map((item,key)=>{
|
||||
return(
|
||||
<div style={{display:'block'}}>
|
||||
<div className="milepostdiv">
|
||||
<div className="milepostwidth">
|
||||
<div className="grid-item width100">
|
||||
<i className="iconfont icon-lubiaosignpost3 font-12 mr3"></i>
|
||||
|
@ -185,8 +201,8 @@ class Milepost extends Component{
|
|||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div className="milepostdiv" style={{marginTop:5}}>
|
||||
</div>
|
||||
<div className="milepostdiv" style={{marginTop:5}}>
|
||||
<div className="milepostrighe">
|
||||
|
||||
<div className="grid-item mr10">
|
||||
|
@ -212,43 +228,45 @@ class Milepost extends Component{
|
|||
</span>
|
||||
</div>
|
||||
</div>
|
||||
{
|
||||
data && data.user_admin_or_member ?
|
||||
<div className="milepostleft">
|
||||
<div className="grid-item mr15 color-grey-9">
|
||||
<i className="iconfont icon-bianji3 font-14 mr5"></i>
|
||||
<Link to={`/projects/${projectsId}/orders/${item.id}/meilpost`} className="color-grey-9">编辑</Link>
|
||||
</div>
|
||||
<div className="grid-item mr15 color-grey-9">
|
||||
<i className="iconfont icon-yiguanbi1 font-14 mr5"></i>
|
||||
<a onClick={()=>this.updatestatusemile(this.state.status==="closed"?"open":"closed",item)} className="color-grey-9">{this.state.status==="closed"?"开启":"关闭"}</a>
|
||||
</div>
|
||||
<div className="grid-item mr15 color-grey-9">
|
||||
<i className="iconfont icon-lajitong font-14 mr5" ></i>
|
||||
<Popconfirm placement="bottom" title={'是否删除里程碑?'} okText="是" cancelText="否" onConfirm={()=>this.closemile(item)}>
|
||||
<a className="color-grey-9">删除</a>
|
||||
</Popconfirm>
|
||||
</div>
|
||||
{
|
||||
data && data.user_admin_or_member ?
|
||||
<div className="milepostleft">
|
||||
<div className="grid-item mr15 color-grey-9">
|
||||
<i className="iconfont icon-bianji3 font-14 mr5"></i>
|
||||
<Link to={`/projects/${projectsId}/orders/${item.id}/meilpost`} className="color-grey-9">编辑</Link>
|
||||
</div>
|
||||
<div className="grid-item mr15 color-grey-9">
|
||||
<i className="iconfont icon-yiguanbi1 font-14 mr5"></i>
|
||||
<a onClick={()=>this.updatestatusemile(this.state.status==="closed"?"open":"closed",item)} className="color-grey-9">{this.state.status==="closed"?"开启":"关闭"}</a>
|
||||
</div>
|
||||
<div className="grid-item mr15 color-grey-9">
|
||||
<i className="iconfont icon-lajitong font-14 mr5" ></i>
|
||||
<Popconfirm placement="bottom" title={'是否删除里程碑?'} okText="是" cancelText="否" onConfirm={()=>this.closemile(item)}>
|
||||
<a className="color-grey-9">删除</a>
|
||||
</Popconfirm>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
: ''
|
||||
}
|
||||
</div>
|
||||
: ''
|
||||
}
|
||||
|
||||
</div>
|
||||
<div className="milepostdiv"style={{marginTop:5}}>
|
||||
</div>
|
||||
<div className="milepostdiv"style={{marginTop:5}}>
|
||||
<div className="textwidth">
|
||||
<Text
|
||||
<Text
|
||||
type="secondary"
|
||||
ellipsis={{rows: 30, expandable: false, onExpand: Function}}
|
||||
>
|
||||
>
|
||||
{item.description}</Text>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
})
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
})
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
)
|
||||
}else{
|
||||
return(
|
||||
|
@ -268,28 +286,13 @@ class Milepost extends Component{
|
|||
: ''
|
||||
}
|
||||
|
||||
|
||||
</div>
|
||||
<div style={{display: this.state.display}}>
|
||||
<div className="tagdiv" >
|
||||
<span>里程碑{ data && data.issue_tags_count }已创建</span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="topWrapper">
|
||||
<div className="topWrapper_type">
|
||||
<li className={openselect ? "active":""} onClick={()=>this.opneMilelist(1)}>{data && data.open_count}个开启中</li>
|
||||
<li className={closeselect ? "active":""} onClick={()=>this.opneMilelist(2)}>{data && data.closed_count}个已关闭</li>
|
||||
{/* <span onClick={this.opneMilelist}>{ data && data.open_count }开启中</span>
|
||||
<span onClick={this.closeMilelist}>{ data && data.closed_count }已关闭</span> */}
|
||||
</div>
|
||||
<ul className="topWrapper_select">
|
||||
<li>
|
||||
<Dropdown className="topWrapperSelect" overlay={menu} trigger={['click']} placement="bottomCenter">
|
||||
<span>排序<Icon type="caret-down" className="ml5" /></span>
|
||||
</Dropdown>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{ renderList()}
|
||||
{ Paginations }
|
||||
</div>
|
||||
|
|
|
@ -163,7 +163,6 @@ class New extends Component{
|
|||
<div className="quillContent" style={{marginBottom:"20px"}}>
|
||||
<QuillForEditor
|
||||
value = {description}
|
||||
imgAttrs={{ width: '60px', height: '30px' }}
|
||||
wrapStyle={{
|
||||
height: '220px',
|
||||
opacity:1,
|
||||
|
|
|
@ -280,33 +280,46 @@ class Tags extends Component{
|
|||
const renderList =()=>{
|
||||
if(data && data.issue_tags && data.issue_tags.length>0 ){
|
||||
return(
|
||||
<div className="tagList">
|
||||
{
|
||||
data.issue_tags.map((item,key)=>{
|
||||
return(
|
||||
<div>
|
||||
<div>
|
||||
<div className="topWrapper">
|
||||
<span>共{ data && data.issue_tags_count }个标签</span>
|
||||
<ul className="topWrapper_select">
|
||||
<li>
|
||||
<Dropdown className="topWrapperSelect" overlay={menu} trigger={['click']} placement="bottomCenter">
|
||||
<span>标签<Icon type="caret-down" className="ml5" /></span>
|
||||
</Dropdown>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div className="tagList">
|
||||
{
|
||||
data.issue_tags.map((item,key)=>{
|
||||
return(
|
||||
<div>
|
||||
<span className="width20 mr10">
|
||||
<span style={{backgroundColor:`${item.color}`}} className="tagColor"></span>
|
||||
{item.name}
|
||||
</span>
|
||||
<span className="hide-1 width50 mr10">{item.description}</span>
|
||||
<span className="width15 mr10">{item.issues_count}个开启的工单</span>
|
||||
{
|
||||
data && data.user_admin_or_member ?
|
||||
<div className="width15 text-right">
|
||||
<a onClick={()=>this.editshow(item)} className="topWrapper_btn fr" >编辑</a>
|
||||
<Popconfirm placement="bottom" title={'删除标签会将其从所有引用中删除。继续?'} okText="是" cancelText="否" onConfirm={()=>this.deletetag(item.id)}>
|
||||
<a className="a_btn delete_btn fr" >删除</a>
|
||||
</Popconfirm>
|
||||
<span className="hide-1 width50 mr10">{item.description}</span>
|
||||
<span className="width15 mr10">{item.issues_count}个开启的工单</span>
|
||||
{
|
||||
data && data.user_admin_or_member ?
|
||||
<div className="width15 text-right">
|
||||
<a onClick={()=>this.editshow(item)} className="topWrapper_btn fr" >编辑</a>
|
||||
<Popconfirm placement="bottom" title={'删除标签会将其从所有引用中删除。继续?'} okText="是" cancelText="否" onConfirm={()=>this.deletetag(item.id)}>
|
||||
<a className="a_btn delete_btn fr" >删除</a>
|
||||
</Popconfirm>
|
||||
|
||||
</div>
|
||||
: ''
|
||||
}
|
||||
</div>
|
||||
)
|
||||
})
|
||||
}
|
||||
</div>
|
||||
: ''
|
||||
}
|
||||
</div>
|
||||
)
|
||||
})
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
)
|
||||
}else{
|
||||
return(
|
||||
|
@ -378,16 +391,7 @@ class Tags extends Component{
|
|||
|
||||
|
||||
</div>
|
||||
<div className="topWrapper">
|
||||
<span>共{ data && data.issue_tags_count }个标签</span>
|
||||
<ul className="topWrapper_select">
|
||||
<li>
|
||||
<Dropdown className="topWrapperSelect" overlay={menu} trigger={['click']} placement="bottomCenter">
|
||||
<span>标签<Icon type="caret-down" className="ml5" /></span>
|
||||
</Dropdown>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{ renderList() }
|
||||
{ Paginations }
|
||||
</div>
|
||||
|
|
|
@ -136,6 +136,16 @@ class UpdateDetail extends Component{
|
|||
)
|
||||
}
|
||||
}
|
||||
stringJson=(value) =>{
|
||||
let _value = null;
|
||||
|
||||
try {
|
||||
_value = JSON.parse(value);
|
||||
} catch (e) {
|
||||
_value = value;
|
||||
}
|
||||
return _value
|
||||
}
|
||||
// 获取上传后的文件id数组
|
||||
UploadFunc=(fileList)=>{
|
||||
this.setState({
|
||||
|
@ -208,9 +218,8 @@ class UpdateDetail extends Component{
|
|||
)}
|
||||
</Form.Item>
|
||||
<div className="quillContent" style={{marginBottom:"20px"}}>
|
||||
<QuillForEditor
|
||||
value = {textcount}
|
||||
imgAttrs={{ width: '60px', height: '30px' }}
|
||||
<QuillForEditor
|
||||
value = {this.stringJson(textcount)}
|
||||
wrapStyle={{
|
||||
height: '220px',
|
||||
opacity:1,
|
||||
|
|
|
@ -691,7 +691,7 @@ submittojoinclass=(value)=>{
|
|||
this.setState({
|
||||
mygetHelmetapi2: undefined
|
||||
});
|
||||
document.title = "EduCoder";
|
||||
document.title = "Forge";
|
||||
var link = document.createElement('link'),
|
||||
oldLink = document.getElementById('dynamic-favicon');
|
||||
link.id = 'dynamic-favicon';
|
||||
|
@ -730,21 +730,18 @@ submittojoinclass=(value)=>{
|
|||
try {
|
||||
var chromesettingArray = JSON.parse(localStorage.getItem('chromesetting'));
|
||||
var chromesettingresponseArray = JSON.parse(localStorage.getItem('chromesettingresponse'));
|
||||
// console.log("NewHeaderNewHeaderNewHeader");
|
||||
// console.log(chromesettingArray);
|
||||
// console.log(chromesettingresponseArray);
|
||||
|
||||
this.setState({
|
||||
mygetHelmetapi2:chromesettingArray
|
||||
});
|
||||
if (chromesettingArray.tab_logo_url) {
|
||||
this.gettablogourldata(chromesettingresponseArray);
|
||||
} else {
|
||||
this.gettablogourlnull();
|
||||
}
|
||||
|
||||
this.setState({
|
||||
mygetHelmetapi2:chromesettingArray
|
||||
});
|
||||
if (chromesettingArray.tab_logo_url) {
|
||||
this.gettablogourldata(chromesettingresponseArray);
|
||||
} else {
|
||||
this.gettablogourlnull();
|
||||
}
|
||||
}catch (e) {
|
||||
console.log("head获取游览器配置失败 重新请求开始读取配置");
|
||||
this.geturlsdata();
|
||||
// console.log("head获取游览器配置失败 重新请求开始读取配置");
|
||||
this.geturlsdata();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1082,13 +1079,15 @@ submittojoinclass=(value)=>{
|
|||
{/*<li className={`${activeIndex === true ? 'active' : ''}`}><a href="/">首页</a></li>*/}
|
||||
|
||||
{/*<li><a href={this.props.Headertop===undefined?"":this.props.Headertop.shixun_paths_url}>实训路径</a></li>*/}
|
||||
<li className={`${activePaths === true ? 'pr active' : 'pr'}`}>
|
||||
<Link to={this.props.Headertop===undefined?"":'/paths'}>实践课程</Link>
|
||||
</li>
|
||||
<li className={`${activePaths === true ? 'pr active' : 'pr'}`}>
|
||||
<Link to={'/projects'}>开源项目</Link>
|
||||
</li>
|
||||
{/*<li className={`${activePaths === true ? 'pr active' : 'pr'}`}>*/}
|
||||
{/*<Link to={this.props.Headertop===undefined?"":'/paths'}>实践课程</Link>*/}
|
||||
{/*</li>*/}
|
||||
|
||||
{/*<li><a href={this.props.Headertop===undefined?"":'/courses'}>课堂</a></li>*/}
|
||||
<li className={`${coursestype === true ? 'pr active' : 'pr'}`}>
|
||||
{/*<a href={this.props.Headertop===undefined?"":this.props.Headertop.course_url}>课堂</a>*/}
|
||||
<Link to={this.props.Headertop===undefined?"":'/courses'}>翻转课堂</Link>
|
||||
</li>
|
||||
<li className={`${activeShixuns === true ? 'pr active' : 'pr'}`}>
|
||||
|
@ -1283,7 +1282,14 @@ submittojoinclass=(value)=>{
|
|||
{this.props.user&&this.props.user.main_site===true?"":this.props.Headertop===undefined?"":
|
||||
pathstype===true?"":this.props.user&&this.props.user.admin===true||this.props.user&&this.props.user.is_teacher===true||this.props.user&&this.props.user.business===true?<li><a onClick={(url)=>this.getUser("/paths/new")} >新建实践课程</a></li>:""
|
||||
}
|
||||
{this.props.user&&this.props.user.main_site===true?<li><a onClick={(url)=>this.getUser("/projects/new","projects")} target="_blank">新建开发项目</a></li>:""}
|
||||
{/*{this.props.user&&this.props.user.login?<li><a onClick={(url)=>this.getUser("/projects/new","projects")} target="_blank">新建开发项目</a></li>:""}*/}
|
||||
{
|
||||
this.props.user&&this.props.user.login?<li><Link to={"/projects/mirror/new"}>新建镜像项目</Link></li>:""
|
||||
}
|
||||
{
|
||||
this.props.user&&this.props.user.login?<li><Link to={"/projects/deposit/new"}>新建托管项目</Link></li>:""
|
||||
}
|
||||
|
||||
</ul>
|
||||
{coursestypes===true&&this.props.user&&this.props.user.main_site===false?"":<ul className="fl with50 edu-txt-center">
|
||||
|
||||
|
|
|
@ -264,7 +264,7 @@ export function TPMIndexHOC(WrappedComponent) {
|
|||
this.setState({
|
||||
mygetHelmetapi: undefined
|
||||
});
|
||||
document.title = "EduCoder";
|
||||
document.title = "Forge";
|
||||
var link = document.createElement('link'),
|
||||
oldLink = document.getElementById('dynamic-favicon');
|
||||
link.id = 'dynamic-favicon';
|
||||
|
|
Loading…
Reference in New Issue